/*
 * create:2016年4月24日 上午11:33:02
 * author:wangds  
 */
package com.cxkj.shop.form;

import java.util.Date;

import net.wangds.common.GeneralParentObject;

/**
 * .
 * @author wangds
 *
 */
public class DefaultDeliveryBuilder<T> extends GeneralParentObject implements DeliveryBuilder<T>{
  
  private boolean result = false;
  private Date startTm;
  private T data;
  private Date endTm;
  
  private DefaultDeliveryBuilder(){}

  public static <C> DeliveryBuilder<C> getInstance(){
    return new DefaultDeliveryBuilder<C>();
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#init()
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public void init(){
    this.startTm=new Date();
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#setData(T)
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public void setData(T data){
    this.data = data;
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#success()
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public void success(){
    this.result = true;
    this.endTm=new Date();
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#fail()
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public void fail(){
    this.result = false;
    this.endTm=new Date();
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#toDelivery()
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public Delivery toDelivery(){
    DefaultDelivery<T> res = new DefaultDelivery<T>();
    res.setCreateTs(this.startTm.getTime());
    res.setData(data);
    res.setPostTs(this.endTm.getTime());
    res.setSuccess(result);
    return res;
  }
  
  /*
   * @see com.cxkj.shop.form.DeliveryBuilder#clear()
   * @author wangds 2016年4月24日 上午11:46:56.
   */
  @Override
  public void clear(){
    this.result=false;
    this.startTm=null;
    this.endTm=null;
    this.data=null;
  }
  
}
